#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;

const int MAX_LEN = 10;
const int ALPHABET_SIZE = 26;

// 动态规划数组，dp[i][j] 表示长度为 i 且以第 j 个字母开头的字符串数量
int dp[MAX_LEN + 1][ALPHABET_SIZE + 1];

// 预处理 dp 数组
void preprocess() {
    for (int i = 1; i <= MAX_LEN; i++) {
        for (int j = 1; j <= ALPHABET_SIZE; j++) {
            if (i == 1) {
                dp[i][j] = 1;
            } else {
                dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
            }
        }
    }
}

// 计算长度为 n 且以第 j 个字母开头的字符串数量
int section_sum(int j, int n) {
    return dp[n][j];
}

// 计算长度为 n 的所有可能字符串的数量
int total_sum(int n) {
    int sum = 0;
    for (int j = 1; j <= ALPHABET_SIZE; j++) {
        sum += dp[n][j];
    }
    return sum;
}

int main() {
    preprocess();  // 预处理 dp 数组

    // 从文件 input.txt 读取输入
    ifstream inputFile("input.txt");
    if (!inputFile.is_open()) {
        cerr << "无法打开文件 input.txt" << endl;
        return 1;
    }

    int k;
    inputFile >> k;  // 读取字符串数量

    // 用于存储结果的数组
    int results[k];

    for (int line = 0; line < k; line++) {
        char str[11];  // 假设字符串最大长度为10，预留一个位置给'\0'
        inputFile >> str;
        int ans = 0;
        int len = strlen(str);

        for (int i = 1; i < len; i++) {
            ans += total_sum(i);
        }

        for (int i = 0; i < len; i++) {
            int num = str[i] - 'a' + 1;
            for (int j = 1; j < num; j++) {
                ans += section_sum(j, len - i);
            }
        }

        results[line] = ans + 1;  // 存储当前字符串的字典序排名
    }

    inputFile.close();

    // 将结果输出到文件 output.txt
    ofstream outputFile("output.txt");
    if (!outputFile.is_open()) {
        cerr << "无法打开文件 output.txt" << endl;
        return 1;
    }

    for (int i = 0; i < k; i++) {
        outputFile << results[i] << endl;  // 输出每个字符串的字典序排名
    }

    outputFile.close();

    return 0;
}
